﻿#pragma once
#include <stdio.h>
#include <stdlib.h>
#include <malloc.h>
#include <assert.h>

/*

*/

typedef int DataType;

typedef struct SeqList 
{
	DataType* array;	// 指向动态开辟的数组
	size_t size;		// 有效数据个数
	size_t capacity;	// 容量大小
}SeqList;


// 顺序表工具函数
// 空间检查/扩容
void CheckCapacity(SeqList* ps);

// 顺序表-基本操作函数
// 顺序表初始化
void SeqListInit(SeqList* ps, size_t capacity);
// 顺序表尾部插入
void SeqListPushBack(SeqList* ps, DataType elem);
// 顺序表尾部删除
void SeqListPopBack(SeqList* ps);
// 顺序表头部插入
void SeqListPushFront(SeqList* ps, DataType elem);
// 顺序表头部删除
void SeqListPopFront(SeqList* ps);
// 顺序表查找指定元素下标
int SeqListFind(SeqList* ps, DataType elem);
// 顺序表在指定下标插入元素
void SeqListInsert(SeqList* ps, size_t pos, DataType elem);
// 顺序表删除指定下标元素
void SeqListErase(SeqList* ps, size_t pos);
// 顺序表销毁
void SeqListDestory(SeqList* ps);
// 顺序表遍历
void SeqListTraverse(SeqList* ps);